home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / demo / rotplnnr.lha / reg.c < prev    next >
C/C++ Source or Header  |  1994-08-20  |  1KB  |  62 lines

  1. #define NOFUNCTIONS
  2. #include <reg.h>
  3.  
  4. char *SoftwareList[]={"Any","ScreenFool","RouteEdit",NULL};
  5.  
  6. BOOL Authenticate(struct Registration *reg, ULONG software)
  7. {
  8.   if(DFTChecksum(reg)!=reg->AutreChecksum) return FALSE;
  9.   
  10.   if(reg->ChecksumNumber!=DoFunkyThing(reg->ActualNumber)) return FALSE;
  11.   
  12.   if(software!=reg->CTSAuthorized && reg->CTSAuthorized!=CTS_ANY)
  13.     return FALSE;
  14.   
  15.   return TRUE;
  16. }
  17.  
  18. ULONG DoFunkyThing(ULONG source)
  19.   {
  20.   ULONG dest;
  21.   
  22.   srand(source*999);
  23.   dest=rand();
  24.   
  25.   dest=(dest*13);
  26.   srand(dest);
  27.   dest=rand();
  28.   
  29.   dest=abs(dest/97);
  30.   
  31.   return(dest ? dest : 9821841UL );
  32.   }
  33.  
  34. ULONG StringSum(char *str)
  35. {
  36.   ULONG sum=0;
  37.   
  38.   while(*str)
  39.     {
  40.     sum+=*str;
  41.     str++;
  42.     }
  43.   
  44.   return sum;
  45. }
  46.  
  47. ULONG DFTChecksum(struct Registration *reg)
  48. {
  49.   ULONG sum;
  50.   
  51.   sum=StringSum(reg->Name);
  52.   sum+=StringSum(reg->Addr1);
  53.   sum+=StringSum(reg->Addr2);
  54.   sum+=StringSum(reg->Country);
  55.   sum+=StringSum(reg->EMail);
  56.   sum+=StringSum(reg->Copyright);
  57.   sum+=reg->CTSAuthorized;
  58.   
  59.   return DoFunkyThing(sum);
  60. }
  61.  
  62.